The communications industry is rapidly changing to adjust to emerging technologies and ever increasing customer demand. This customer demand for new applications and increased performance of existing applications is driving communications network and system providers to employ networks and systems having greater speed and capacity (e.g., greater bandwidth). In trying to achieve these goals, a common approach taken by many communications providers is to use packet switching technology.
A priority encoder is a device that processes signals received at its input ports, and identifies the highest priority port on which a signal is asserted. The priority order of the ports in a priority encoder is fixed. For example, a priority encoder has M inputs labeled zero to M−1. This priority encoder will generate the address of the lowest numbered port on which an asserted signal is received during that decision cycle. Thus, input zero will always be selected if an asserted signal is received thereon.
In contrast, the starting position of a programmable priority encoder is variable, and is received as a parameter to the logic of the programmable priority encoder. For example, a programmable priority encoder has M inputs labeled zero to M−1. This priority encoder receives as an input for each decision cycle a starting position value ranging from 0 to M−1. This programmable priority encoder will generate the address of the first port at or after (with the order wrapping around from M−1 to zero) the starting position input value. This dynamic starting position of the ordering of input ports in the programmable priority encoder adds a certain amount of fairness in a sequence of decision cycles.